package global

// xls
type (
	XSyncSheetName struct {
		Terminal  string `json:"terminal"`
		Result    string `json:"sync_result"`
		MissTable string `json:"missTable"`
	}
	XSyncSheetTail struct {
		Seq                string `json:"任务序号"`
		Schema             string `json:"库名"`
		Table              string `json:"表名"`
		SyncSum            *int64 `json:"任务启动时源端获取记录数"` //表的实际行数
		SelectRows         *int64 `json:"迁移过程中获取行数"`    //源端查询装填
		InsertRows         *int64 `json:"迁移过程中写入行数"`    //目标端写入状态
		SyncStatus         string `json:"任务状态"`         //同步状态   0为正常，-1为异常
		TableCost          string `json:"单表迁移耗时(s)"`
		MigrationRate      string `json:"迁移速率 rows/s"`
		SourceDataSize     string `json:"源端数据量(MB)"`
		DestDataSize       string `json:"目标端数据量(MB)"`
		DataExpansionRatio string `json:"数据膨胀比(源端MB/目标端MB)"`
		Comment            string `json:"备注"` //主要描述错误信息的记录
	}
)
type (
	// TSync 终端结果输出表结构
	TSync struct {
		Seq        string `json:"seq"`
		Schema     string `json:"schema"`
		Table      string `json:"table"`
		IndexType  string `json:"indexType"`
		IndexCol   string `json:"indexColumn"`
		CheckMode  string `json:"mode"`       //模式
		SyncSum    *int64 `json:"syncRows"`   //表的实际行数
		SelectRows *int64 `json:"selectRows"` //源端查询装填
		InsertRows *int64 `json:"insertRows"` //目标端写入状态
		SyncStatus *int64 //同步状态   0为正常，-1为异常  //`json:"syncStatus"`
		SyncInfo   string `json:"syncStat"` //同步信息，主要记录error信息
	}
)

type (
	RowsPlan struct {
		Switch   bool
		CheckMod string
		//SyncMove      SyncObject
		CheckRows    SyncCheckCount
		UseMetadata  UseTableMetadata
		UseIndexData UseIndex
		//PartitionData Partition
	}
)

// sync 迁移
type (
	SyncObject struct {
		Schema     string                                     `json:"schema"`
		Table      string                                     `json:"table"`
		MapSchema  map[string] /*schema+table*/ ObjectMapList `json:"mapSchema"`
		ShardNameS map[string] /*schema+table*/ string/*shardName*/ `json:"shardNameS"`
		ShardNameD map[string] /*schema+table*/ string/*shardName*/ `json:"shardNameD"`
	}
	SyncCheckCount struct {
		SrcCheckCount *int64 `json:"srcCheckCount"`
		DstCheckCount *int64 `json:"dstCheckCount"`
	}
	SyncPlan struct {
		Switch       bool
		CheckMod     string
		Seq          int
		SyncMove     SyncObject
		CheckRows    SyncCheckCount
		UseMetadata  UseTableMetadata
		UseIndexData UseIndex
	}
	CountPlan struct {
	}
	TableDistribution struct {
		PartitionId string `json:"partitionId"`
		ShardMode   string `json:"shardMode"`
		ShardName   string `json:"shardName"`
		Name        string `json:"tableName"`
	}
	GetIndexColumnProperty struct {
		NullGather []string
		TypeGather []string
	}
)
